package com.switz.agendacita.controller;

import java.sql.Time;
import java.sql.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.switz.agendacita.dto.PersonalNoHorario;
import com.switz.agendacita.dto.PersonalServicio;
import com.switz.agendacita.services.iface.PersonalService;
import java.util.LinkedList;

@Controller
public class PersonalController {

	@Autowired
	@Qualifier("personalServiceImpl")
	private PersonalService personalService;
	
	@RequestMapping(value = "/agregarVacaciones")
	@ResponseBody
	public void agregarVacaciones(
			@RequestParam("idEmpresa") String idEmpresa,
			@RequestParam("idPersonal") String idPersonal,
			@RequestParam("fechaInicio") Date fechaInicio,
			@RequestParam("fechaFin") Date fechaFin
			){
		
		PersonalNoHorario personalNoHorario = new PersonalNoHorario();
		personalNoHorario.setIdEmpresa(idEmpresa);
		personalNoHorario.setIdPersonal(idPersonal);
		personalNoHorario.setFechaFin(fechaFin);
		personalNoHorario.setFechaInicio(fechaInicio);
		personalService.agregarPeridoVacacional(personalNoHorario);
	}

	@RequestMapping(value="/obtenerDiasLaborales")
	@ResponseBody
	public List obtenerDiasLaborales(){
		return personalService.obtenerDiasLaborales("12MFX0416U000");
	}
        
        @RequestMapping(value = "/agregarServicio")
        @ResponseBody
	public void agregarNuevoServicio(
			@RequestParam("idempresa") String idEmpresa,
			@RequestParam("idpersonal") String idPersonal,
			@RequestParam("idServicio") String[] idServicio
			){

            List<PersonalServicio> personalServiciosList = new LinkedList<>();
        //crea la lista de servicios por personal
        for (int i = 0; i < idServicio.length; i++)
        {
            personalServiciosList.add(new PersonalServicio(idEmpresa, idPersonal, idServicio[i]));

        }
        personalService.registrarNuevoServicioAlPersonal(personalServiciosList);
       
        
        }
        
        
    @RequestMapping(value = "/obtenerServicioPorPersonal")
    @ResponseBody
    public List obtenerServicioPorPersonal(
             @RequestParam("idEmpresa") String idEmpresa,
            @RequestParam("idPersonal") String idPersonal           
            ) {

        return personalService.ListarServiciosPorPersonal(idEmpresa,idPersonal);


    }
        
     @RequestMapping(value = "/borrarServicioPorPersonal")
    @ResponseBody
    public void borrarServicioPorPersonal(
             @RequestParam("idpersonal") String idPersonal,
             @RequestParam("idservicio") String idServicio
             ) {

        personalService.borrarServiciosPorPersonal(idPersonal, idServicio);


    }

     @RequestMapping(value = "/eliminarDescanzoEspecial")
     @ResponseBody
 	public void eliminarDescanzoEspecial(
 			@RequestParam("idEmpresa") String idEmpresa,
 			@RequestParam("idPersonal") String idPersonal,
 			@RequestParam("fechaInicio") Date fechaInicio,
 			@RequestParam("fechaFin") Date fechaFin,
 			@RequestParam("horaInicio") Time horaInicio,
 			@RequestParam("horaFin") Time horaFin
 			){
 		
 		PersonalNoHorario personalNoHorario = new PersonalNoHorario();
 		personalNoHorario.setIdEmpresa(idEmpresa);
 		personalNoHorario.setIdPersonal(idPersonal);
 		personalNoHorario.setFechaFin(fechaFin);
 		personalNoHorario.setFechaInicio(fechaInicio);
 		personalNoHorario.setHoraFin(horaFin);
 		personalNoHorario.setHoraInicio(horaInicio);
 		personalService.eliminarDescanzoEspecial(personalNoHorario);
 	}
     
     @RequestMapping(value = "/agregarDescanzoEspecial")
 	@ResponseBody
 	public void agregarDescanzoEspecial(
 			@RequestParam("idEmpresa") String idEmpresa,
 			@RequestParam("idPersonal") String idPersonal,
 			@RequestParam("fechaInicio") Date fechaInicio,
 			@RequestParam("fechaFin") Date fechaFin,
 			@RequestParam("horaInicio") Time horaInicio,
 			@RequestParam("horaFin") Time horaFin
 			){
 		
 		PersonalNoHorario personalNoHorario = new PersonalNoHorario();
 		personalNoHorario.setIdEmpresa(idEmpresa);
 		personalNoHorario.setIdPersonal(idPersonal);
 		personalNoHorario.setFechaFin(fechaFin);
 		personalNoHorario.setFechaInicio(fechaInicio);
 		personalNoHorario.setHoraFin(horaFin);
 		personalNoHorario.setHoraInicio(horaInicio);
 		personalService.agregarPeridoDescanzoEspecial(personalNoHorario);
 	}
     
     @RequestMapping(value = "/eliminarVacaciones")
     @ResponseBody
  	public void eliminarVacaciones(
  			@RequestParam("idempresa") String idEmpresa,
  			@RequestParam("idpersonal") String idPersonal,
  			@RequestParam("fechainicio") Date fechaInicio,
  			@RequestParam("fechafin") Date fechaFin  			
  			){
  		
  		PersonalNoHorario personalNoHorario = new PersonalNoHorario();
  		personalNoHorario.setIdEmpresa(idEmpresa);
  		personalNoHorario.setIdPersonal(idPersonal);
  		personalNoHorario.setFechaFin(fechaFin);
  		personalNoHorario.setFechaInicio(fechaInicio);  		
  		personalService.eliminarPeridoVacacional(personalNoHorario);
  	}
}
